<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../../../学习资料/lib/jquery/jquery-3.2.1.js"></script>
</head>
<body>
    <script>
        // let promise = new Promise((resolve,reject)=>{//声明一个promise对象 对象有一个回调函数 回调函数有两个形参 resolve代表成功 reject代表失败
        //     if(false){//true为成功 false为失败
        //         resolve('成功');//resolve('结果')
        //     }else{
        //         reject('失败');//reject('结果')
        //     }
        // })
        // console.log(promise);
        // promise.then((data)=>{//成功状态调用Promise的then方法
        //     console.log(data);//输出成功的结果
        // }).finally(()=>{//可以链式调用
        //     console.log('不管成功还是失败我都会出现哦');
        // })
        // promise.catch((err)=>{//失败状态调用Promise的catch方法
        //     console.log(err);//输出失败的结果
        // })
        // // promise.finally(()=>{//不管状态是成功还是失败都会执行的回调函数
        //     // console.log('iu');
        // // })
        // let promise = new Promise((resolve,reject)=>{
        //     $.ajax({
        //         method:'get',
        //         url:'http://localhost:3000/search_info',
        //         success:((data)=>{
        //             console.log(data);
        //             resolve(data);
        //         }),
        //         error:((err)=>{
        //             console.log(err);
        //             reject(err);
        //         })
        //     })
        // })
        // promise.then((data)=>{
        //     console.log(data);
        // })
        // promise.catch((err)=>{
        //     console.log(err);
        // })
        // let promise = new Promise((resolve,reject)=>{
        //     if(true){
        //         resolve('成功');
        //     }else{
        //         reject('失败');
        //     }
        // })
        // console.log(promise);
        // promise.then((data)=>{
        //     console.log(data);
        // }).finally(()=>{
        //     console.log('不管成功失败我都会出现哦');
        // })
        // promise.catch((err)=>{
        //     console.log(err);
        // }).finally(()=>{
        //     console.log('不管成功失败我都会出现哦');
        // })
        // let obj = {
        //     name:'iu'
        // }
        // // console.log(obj);
        // let p1 = Promise.resolve(obj);
        // console.log(p1);
        // p1.then((data)=>{
        //     console.log(data);//是对象本身
        // })
        // // let p2 = Promise.resolve('123');
        // // console.log(p2);
        // let p2 = Promise.resolve([516,'iu','李知恩']);
        // console.log(p2);
        // p2.then((data)=>{
        //     console.log(data);
        // })
        // let iu = {
        //     then(resolve,reject){
        //         resolve('成功');//这个值会被输出
        //     }
        // }
        // let p3 = Promise.resolve(iu);
        // p3.then((data)=>{
        //     console.log(data);//是成功时的结果
        // })
        // let p4 = Promise.resolve();//什么都不传 代表什么都不接收了 执行该函数的逻辑
        // p4.then(()=>{
        //     console.log('哦吼');//这个会被输出
        // })
        // Promise.reject();
        // let p5 = Promise.reject('出错了');//会把这个值输出
        // p5.catch((err)=>{
        //     console.log(err);
        // })
        // let p6 = Promise.reject({err:'出错了'});
        // p6.catch((err)=>{
        //     console.log(err);//会把对象输出
        // })
        // let iu = {
        //     catch(resolve,reject){
        //         reject('出错了');
        //     }
        // }
        // let iuu = {
        //     then(resolve,reject){
        //         console.log('出错了！！');
        //     }
        // }
        // let p7 = Promise.reject(iuu);
        // p7.catch((err)=>{
        //     console.log(err);
        // })
        // let p9 = new Promise((resolve,reject)=>{
        //     if(true){
        //         resolve('成功');
        //     }else{
        //         reject('失败');
        //     }
        // })
        // let p10 = new Promise((resolve,reject)=>{
        //     if(true){
        //         resolve('成功！')
        //     }else{
        //         reject('失败！');
        //     }
        // })
        // let p_all = Promise.all([p1,p2,p3,p4,p9,p10]);
        // console.log(p_all);
        // p_all.then((data)=>{
        //     console.log(data);
        // }).catch((err)=>{
        //     console.log(err);
        // })
        // let obj = {
        //     name:'iu'
        // }
        // let p1 = Promise.reject(obj);
        // p1.catch((data)=>{
        //     console.log(data);
        // })
        // let p2 = Promise.reject('123345');
        // p2.catch((err)=>{
        //     console.log(err);
        // })
        // let iu = {
        //     catch(resolve,reject){
        //         reject('成功');
        //     }
        // }
        // let p3 = Promise.reject(iu);
        // p3.catch((err)=>{
        //     console.log(err);
        // })
        //thenable对象 特殊对象
        let iu = {
            then(resolve,reject){
                resolve('成功');
            }
        }
        let p3 = Promise.resolve(iu);
        console.log(p3);
        p3.then((data)=>{
            console.log(data);
        })
        if(p3 !== null &&(
            typeof p3 === 'object' || typeof p3 === 'function'
        )&&(
            typeof p3.then === 'function'
        )){ 
            console.log('thenable对象');
        }else{
            console.log('非thenable对象');
        }
    </script>
</body>
</html>